통신 프로토콜
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
통신 프로토콜은 네트워크를 통해 장치 간 정보 교환을 위한 규칙 및 사양의 집합이다. 1960년대에 개념이 시작되어 컴퓨터 네트워크 발전과 함께 발전해 왔으며, 데이터 형식, 주소, 라우팅, 오류 감지, 흐름 제어 등 다양한 규칙을 정의한다. 통신 프로토콜은 텍스트 기반과 바이너리 기반으로 나뉘며, TCP/IP, OSI 모델 등 다양한 프로토콜 스위트가 존재한다. 프로토콜은 계층화된 구조를 가지며, 표준화 기구(IETF, ISO 등)를 통해 표준이 제정된다. 또한, 프로토콜은 와이어 이미지, 경화, 설계 패턴, 분류 체계 등 다양한 측면에서 연구되고 있으며, 자동차, 가전, 항공우주, 암호화폐 등 다양한 분야에서 활용된다.
더 읽어볼만한 페이지
- 통신 프로토콜 - 안드로이드 디버그 브리지
안드로이드 디버그 브리지(ADB)는 안드로이드 기기를 디버깅하고 제어하는 명령줄 도구로, 파일 복사, 앱 설치, 로그 확인, 셸 명령어 실행 등의 기능을 제공하며, 클라이언트-서버 아키텍처를 기반으로 USB 또는 Wi-Fi를 통해 통신한다. - 통신 프로토콜 - 야디스
야디스(XRDS)는 XRI 리소스에 대한 정보를 담고 있는 XML 기반 형식으로, 서비스 발견 및 타입 발견을 위해 설계되었으며, 분산 ID 시스템에서 사용자의 ID 공급자를 찾고 관련 서비스를 연결하는 데 사용된다. - 컴퓨터 네트워킹 - 유니캐스트
유니캐스트는 데이터를 단일 목적지로 전송하는 방식으로, 브로드캐스트 및 멀티캐스트와 대비되며, 개인적 또는 고유한 리소스가 필요한 네트워크 프로세스에 사용되지만, 대량 데이터 전송 시 비용이 증가하는 단점이 있다. - 컴퓨터 네트워킹 - 노드 (네트워크)
노드(네트워크)는 데이터 통신에서 데이터를 주고받는 장치를 의미하며, 물리적 네트워크 노드, 인터넷 노드, 통신 네트워크 노드, 분산 시스템 노드, 네트워크 가상화 노드 등으로 분류된다. - 네트워크 프로토콜 - UUCP
UUCP는 유닉스 시스템 간 파일 복사, 원격 명령 실행, 이메일 및 유즈넷 뉴스 전송을 위한 프로토콜 및 프로그램 모음으로, 초기 인터넷 확장에 중요한 역할을 했으나 TCP/IP 기반 서비스 보편화로 사용이 감소했다. - 네트워크 프로토콜 - 프레임 릴레이
프레임 릴레이는 LAN 간 또는 WAN 종단점 간 데이터 전송을 위한 고속 패킷 교환 방식 통신 프로토콜로, X.25 프로토콜을 간소화하여 속도를 높이고, 영구 가상 회선을 통해 안정적인 연결을 제공하며, 서비스 품질 설정을 통해 프레임 우선순위를 지정할 수 있었으나, 현재는 다른 기술에 밀려 사용이 감소하고 있다.
통신 프로토콜 |
---|
2. 역사
통신을 수행하기 위해서는 참여하는 주체들 사이에 미리 정해진 규격, 즉 통신 규약이 필요하다. 예를 들어, 일본 에도 시대에는 깃발 신호(기수 통신)를 이용해 쌀의 시세 정보를 각지에 전달했는데, 이때 깃발을 흔드는 방향이나 횟수가 무엇을 의미하는지에 대한 약속이 미리 정해져 있지 않으면 의미를 전달할 수 없었다. (예: 상승 시세는 왼쪽 위로 두 번, 하락 시세는 오른쪽 아래로 두 번 흔드는 식)[5][6][7][8][9] 프로토콜을 정하고 이를 따르는 것은 통신을 성립시키기 위한 기본 원리라고 할 수 있다.
네트워크나 다른 전송 매체를 통해 장치 간에 교환되는 정보는 통신 프로토콜 사양에서 설정한 규칙과 관례에 따라 관리된다. 통신의 성격, 교환되는 실제 데이터, 그리고 상태에 따른 동작 등이 이 사양에 의해 정의된다. 디지털 컴퓨팅 시스템에서 이러한 규칙은 알고리즘과 자료 구조로 표현될 수 있다. 프로토콜은 통신 과정에서 알고리즘이나 프로그래밍 언어가 계산에 영향을 미치는 방식과 유사하다.[3][4]
통신을 원활하게 수행하기 위해서는, 통신에 참여하는 주체들 사이에 미리 통신 규격을 정해야 하는데, 이를 '프로토콜'이라고 한다. 예를 들어, 과거 일본의 에도 시대에는 깃발 신호(기수 통신)를 이용해 쌀 시세 정보를 전달했는데, 이때 깃발을 흔드는 방향이나 횟수에 대해 미리 약속된 규칙(프로토콜)이 없었다면 의미를 전달할 수 없었을 것이다. 이처럼 프로토콜을 정하고 이를 따르는 것은 통신을 성립시키기 위한 기본 원리이다.
현대적인 데이터 통신 맥락에서 '프로토콜(protocol)'이라는 용어가 처음 사용된 것은 1967년 4월, 영국 국립 물리 연구소(NPL)에서 도널드 데이비스가 이끄는 연구팀의 로저 스캔틀베리와 키스 바틀렛이 작성한 "NPL 데이터 통신 네트워크에서 사용하기 위한 프로토콜"이라는 제목의 메모에서였다.[5][6][7][8][9]
컴퓨터 네트워크의 발달과 함께 통신 프로토콜의 개념도 발전했다. 1969년 ARPANET에서는 밥 칸이 작성한 1822 프로토콜이 호스트 간 통신의 시작점이었으며, 이는 IMP(Interface Message Processor)로 메시지를 전송하는 방식을 정의했다.[10] 1970년에는 스티브 크로커, 존 포스텔, 빈트 서프 등이 참여하여 ARPANET의 네트워크 제어 프로그램(NCP)이 처음 구현되었다.[11] NCP 인터페이스는 애플리케이션 소프트웨어가 상위 레벨 통신 프로토콜을 통해 ARPANET에 연결될 수 있도록 지원했으며, 이는 '프로토콜 계층' 개념의 초기 사례로 볼 수 있다.[12]
1970년대 초, 프랑스의 루이 푸쟁이 설계한 CYLADES 네트워크는 엔드 투 엔드 원칙을 구현한 중요한 사례였다. 이 네트워크는 데이터의 안정적인 전송 책임을 네트워크 자체가 아닌 호스트에 두었으며,[13] 그의 팀은 최선형 서비스를 기반으로 안정적인 가상 회선 서비스를 제공하는 복잡한 문제를 해결하여 훗날 전송 제어 프로토콜(TCP) 개발에 기여했다.[14][15][16] 비슷한 시기, 제록스 PARC의 밥 메트칼프 등은 이더넷과 인터넷 연결을 위한 PARC 유니버설 패킷(PUP) 아이디어를 구체화했다.[17]
1970년대 초 밥 칸과 빈트 서프의 연구는 전송 제어 프로토콜(TCP)의 공식화로 이어졌다.[18] 이 명세는 1974년 12월 서프, 요겐 달라르, 칼 선샤인이 작성한 RFC 675에 담겼으며, 당시에는 모놀리식(단일 구조) 설계였다.
국제적인 표준화 노력도 진행되었다. 국제 네트워크 작업 그룹은 1975년 비연결형 데이터그램 표준에 합의했지만, 이는 CCITT(국제전신전화자문위원회)나 ARPANET에 의해 채택되지는 않았다.[19] 대신 가상 회선 기반의 X.25 표준이 레미 데프레 등의 연구를 바탕으로 개발되어 1976년 CCITT에 의해 채택되었다.[20][21] 한편, 컴퓨터 제조사들은 각자의 독점 프로토콜을 개발하기도 했는데, 대표적으로 IBM의 시스템 네트워크 아키텍처(SNA), DEC의 DECnet, 제록스 네트워크 시스템(XNS) 등이 있다.[22]
기존의 TCP 소프트웨어는 모듈식 구조의 프로토콜 스택인 "TCP/IP"로 재설계되었다. 이는 1982년 SATNET에, 그리고 1983년 1월에는 ARPANET에 공식적으로 설치되었다. 1989년까지 RFC 1122 및 RFC 1123 등을 통해 인터넷 프로토콜 제품군이 완성되면서, TCP/IP는 인터넷의 핵심 구성 요소로 자리 잡았다.[23]
통신 표준에 대한 참조 모델로서 1984년에는 OSI 모델이 발표되었다. 이후 1980년대 후반부터 1990년대 초반까지 어떤 표준(OSI 모델과 인터넷 프로토콜 제품군)이 더 우수한 컴퓨터 네트워크를 만들 것인가를 두고 엔지니어, 조직, 국가 간에 치열한 경쟁, 이른바 '프로토콜 전쟁'이 벌어졌다.[24][25][26]
ARPANET과 이후 등장한 X.25 통신 절차 등을 계기로 '프로토콜'이라는 용어가 컴퓨터 네트워크 분야에서 널리 사용되기 시작했다. 프로토콜이 다른 기기 간 통신을 위해서는 프로토콜 변환기와 같은 장비가 필요하다.
3. 통신 시스템
운영 체제는 일반적으로 공유 데이터를 조작하여 서로 통신하는 협력 프로세스 집합을 포함한다. 이 통신은 프로세스 코드 자체에 내장될 수 있는 잘 알려진 프로토콜에 의해 제어된다.[27][28] 반면, 공유 메모리가 없는 통신 시스템은 공유된 전송 매체를 사용하여 서로 통신해야 한다. 이때 전송은 반드시 신뢰할 수 있는 것은 아니며, 각 시스템은 서로 다른 하드웨어 또는 운영 체제를 사용할 수 있다.
네트워킹 프로토콜을 구현하기 위해, 프로토콜 소프트웨어 모듈은 해당 시스템의 운영 체제에 구현된 프레임워크와 인터페이스한다. 이 프레임워크는 운영 체제의 네트워킹 기능을 구현한다.[69] 프로토콜 알고리즘이 이식 가능한 프로그래밍 언어로 표현되면, 프로토콜 소프트웨어는 운영 체제와 독립적으로 만들 수 있다. 가장 잘 알려진 프레임워크로는 TCP/IP 모델과 OSI 모델이 있다.
인터넷 개발 당시, 추상화 계층은 컴파일러 및 운영 체제 설계에서 성공적인 접근 방식으로 입증되었다. 프로그래밍 언어와 통신 프로토콜 간의 유사성을 고려하여, 초기의 단일 구조 네트워킹 프로그램은 여러 협력 프로토콜로 분해되었다.[29] 이는 오늘날 프로토콜 설계의 기초를 이루는 계층형 프로토콜 개념으로 이어졌다.[30]
시스템은 일반적으로 전송을 처리하기 위해 단일 프로토콜을 사용하지 않고, 프로토콜 스위트(protocol suite)라고 불리는 협력 프로토콜 세트를 사용한다.[31] 잘 알려진 프로토콜 스위트로는 TCP/IP, IPX/SPX, X.25, AX.25, AppleTalk 등이 있다.
프로토콜은 기능을 기반으로 그룹화될 수 있다. 예를 들어, 전송 프로토콜 그룹이 있다. 이러한 기능은 계층(layer)에 매핑되며, 각 계층은 애플리케이션, 전송, 인터넷, 네트워크 인터페이스 기능 등 특정 문제 영역을 다룬다.[32] 메시지를 전송하려면 각 계층에서 해당하는 프로토콜을 선택해야 한다. 다음 계층의 프로토콜 선택은 각 계층에 대한 프로토콜 식별자(선택기)를 메시지에 추가하여 이루어진다.[33]
통신을 수행하기 위해서는 통신 참여자 간에 사전에 통신 규격, 즉 프로토콜을 정해야 한다.
예를 들어, 에도 시대 일본에서 기수 통신으로 쌀 시세를 전달할 때, 깃발을 흔드는 방향이나 횟수의 의미를 미리 약속하지 않으면 정보 전달이 불가능했던 것과 같다. 프로토콜을 정하고 이를 따르는 것은 통신을 성립시키기 위한 기본 원리이다. 프로토콜이 다른 기기끼리 통신을 하고 싶을 경우에는 프로토콜 컨버터와 같은 장치를 사용한다.
하나의 통신 과정에서도 역할이 다른 여러 프로토콜이 함께 사용되는 경우가 많으며, 이를 묶어 '프로토콜 스택', '프로토콜 패밀리', 또는 '프로토콜 스위트'라고 부른다. 이는 네트워크 프로토콜이 계층적으로 정의되고, 이를 구현하는 소프트웨어 역시 계층적으로 구축되기 때문이다. 현재 널리 사용되는 대표적인 프로토콜 스위트는 인터넷 프로토콜 스위트(TCP/IP)이다. 인터넷 통신 관련 프로토콜은 주로 컴퓨터 소프트웨어 규정을 중심으로 하며, 전송로 등 하드웨어 규정도 포함한다. 대부분은 IETF에서 정하며, 그 외 IEEE나 ISO 등에서도 표준을 정한다. ITU-T는 전기 통신 관련 프로토콜을 제정한다.
4. 프로토콜의 구성 요소
프로토콜은 크게 두 가지 측면, 즉 물리적 측면과 논리적 측면으로 나눌 수 있다.
일반적으로 통신 프로토콜은 다음과 같은 네 가지 기본 요소를 중심으로 구성된다.
이러한 구성 요소들에 대한 자세한 내용은 아래 하위 섹션에서 다룬다. 만약 서로 다른 프로토콜을 사용하는 기기끼리 통신해야 할 경우에는 프로토콜 변환기와 같은 장치를 사용하기도 한다.
4. 1. 물리적 측면
물리적 측면은 통신 프로토콜에서 자료 전송에 사용되는 전송 매체, 접속용 단자 및 전송 신호, 회선 규격 등을 정의하는 부분을 의미한다.
구체적으로 유선 통신의 경우, 케이블과 커넥터의 형상, 전기적 특성, 광학 파장, 변조 방식을 규정한다. 반면 무선 통신의 경우에는 주파수 대역 및 변조 방식을 규정한다. 예를 들어, IEEE 802.11(Wi-Fi), 블루투스, 지그비 등이 무선 통신 물리 계층의 대표적인 예시에 해당한다.
물리 계층과 관련된 주요 기술 및 규격은 다음과 같다.4. 2. 논리적 측면
프로토콜의 논리적 측면은 통신 과정에서 데이터가 어떻게 구성되고 교환되는지에 대한 규칙을 정의한다. 이는 프레임(Frame, 자료의 표현 형식 단위) 구성, 프레임 안에 있는 각 항목의 뜻과 기능, 자료 전송의 절차 등을 포함한다. 구체적으로 다음과 같은 요소들을 규정한다.
이러한 논리적 규칙들은 통신 시스템이 서로 다른 하드웨어나 운영 체제를 사용하더라도 원활하게 데이터를 교환할 수 있도록 하는 기반이 된다.[90]
4. 3. 상대방 특정
1대1 통신과 달리, 여러 단말이 접속된 네트워크 환경에서는 데이터를 보낼 상대를 정확히 지정할 필요가 있다. 통신 프로토콜에서는 이를 위해 송신자와 수신자를 식별하는 '주소'를 사용한다. 이 주소 정보는 일반적으로 데이터 패킷의 헤더 영역에 포함되며, 각 단말은 이 정보를 보고 자신에게 온 데이터인지 판단하여 처리 여부를 결정한다.[41]
하나의 단말에는 MAC 주소나 IP 주소와 같이 용도에 따라 여러 종류의 주소가 할당되는 경우가 많다. 따라서 서로 다른 주소 체계 간의 변환 규칙, 즉 '주소 매핑'에 대한 약속이 규정되어 있다. 예를 들어, 응용 프로그램에서 사용하는 논리적 IP 주소를 실제 네트워크 카드의 물리적 주소인 MAC 주소로 변환하는 과정이 대표적인 주소 매핑이며[42], 이때 ARP(Address Resolution Protocol)와 같은 프로토콜이 사용된다.
주소 값의 의미를 정하는 규칙을 통칭하여 '주소 지정 방식'이라고 한다. 특정 주소 값은 특별한 의미를 갖기도 하는데, 예를 들어 모든 비트가 1로 이루어진 주소는 해당 네트워크의 모든 단말을 가리키는 브로드캐스트 주소로 사용될 수 있다.[41]
4. 4. 정보 표현
비트 열을 유효한 정보로 통신하기 위해서는 정보의 표현 규칙을 서로 약속해야 한다. 통신 과정에서 교환되는 디지털 메시지인 비트열은 여러 필드로 나뉘며, 각 필드는 프로토콜과 관련된 정보를 전달한다.
개념적으로 비트열은 헤더와 페이로드 두 부분으로 나눌 수 있다. 실제 전달하려는 메시지 내용은 페이로드에 담겨 전송되며, 헤더에는 통신을 제어하고 데이터를 올바르게 전달하기 위한 주소, 순서 번호 등의 정보가 포함된 필드들이 들어간다. 만약 전송하려는 비트열의 길이가 최대 전송 단위(MTU)보다 길 경우, 네트워크를 통해 전송될 수 있도록 적절한 크기의 조각으로 나뉘어 전송된다.[40]
데이터를 표현하는 구체적인 규칙에는 다음과 같은 내용들이 포함된다.
5. 프로토콜의 종류
프로토콜은 여러 기준에 따라 분류할 수 있다.
프로토콜을 구성하는 요소를 기준으로 물리적 측면과 논리적 측면으로 나눌 수 있다.
- '''물리적 측면:''' 자료 전송에 쓰이는 전송 매체, 접속용 단자 및 전송 신호, 회선 규격 등을 포함한다.
- '''논리적 측면:''' 프레임(Frame, 자료의 표현 형식 단위)의 구성 방식, 프레임 내 각 항목의 의미와 기능, 자료 전송 절차 등을 다룬다.
또한, 프로토콜 규격의 공개 여부에 따라 다음과 같이 분류할 수도 있다.
- '''폐쇄적인 프로토콜:''' 특정 기업의 장치들끼리 통신하기 위해 만들어진 독자적인 통신 규약이다. 자세한 규격이 외부에 공개되지 않아 크래킹 위협에 상대적으로 안전하다는 특징이 있다. (예: IBM의 SNA, SDLC 프로토콜)
- '''공개된 범용 프로토콜:''' 여러 종류의 장치에서 널리 사용되도록 규격이 공개된 프로토콜이다. 다양한 환경에서 활용될 수 있지만, 규격이 공개되어 있어 컴퓨터 및 네트워크 크래킹에 상대적으로 취약할 수 있다. (예: 인터넷의 TCP/IP)
이 외에도 전달되는 콘텐츠의 표현 방식을 기준으로 텍스트 기반 프로토콜과 바이너리 프로토콜로 구분하기도 한다.[34]
5. 1. 텍스트 기반 프로토콜
'''텍스트 기반 프로토콜''' 또는 '''일반 텍스트 프로토콜'''은 내용을 사람이 읽을 수 있는 형식으로 나타낸다. 이는 종종 ASCII나 UTF-8과 같은 기계가 읽을 수 있는 인코딩으로 인코딩된 일반 텍스트 또는 XML, JSON과 같은 구조화된 텍스트 기반 형식으로 표현된다. Intel hex format과 같은 형식도 사용될 수 있다.이러한 프로토콜은 즉각적인 인간 가독성을 제공한다는 점에서, 기계적 구문 분석의 용이성이나 향상된 대역폭 활용 등 컴퓨터 환경에 최적화된 바이너리 프로토콜과 대조된다. 네트워크 애플리케이션에서 데이터를 캡슐화하는 여러 방법 중, 인터넷 프로토콜에서는 ASCII 텍스트 줄로 요청과 응답을 전송하고 줄 바꿈 문자로 종료하는 텍스트 지향 표현이 흔히 사용된다.
텍스트 기반 프로토콜은 사람이 내용을 쉽게 분석하고 해석할 수 있도록 최적화되어 있으므로, 디버깅 과정이나 프로토콜 개발 초기 설계 단계처럼 사람이 직접 프로토콜 내용을 검토해야 할 때 유용하다. 사람이 읽을 수 있는 일반 텍스트 명령을 사용하는 대표적인 프로토콜로는 FTP, SMTP, 초기 버전의 HTTP, 핑거 프로토콜 등이 있다.[35]
5. 2. 바이너리 프로토콜
'''이진 프로토콜'''은 바이트의 모든 값을 활용하는 프로토콜이다. 이는 ASCII 인코딩에서 사람이 읽을 수 있는 문자에 해당하는 값만 사용하는 텍스트 기반 프로토콜과 차이가 있다. 이진 프로토콜은 사람이 직접 읽기보다는 기계가 처리하도록 설계되었으며, 데이터 표현이 간결하다는 장점을 가진다. 이러한 간결성은 데이터 전송 및 해석 속도를 높이는 데 기여한다.[36]이진 프로토콜은 EbXML, HTTP/2, HTTP/3, EDOC과 같은 여러 최신 표준에서 사용되고 있다.[37] 또한, UML[38]의 인터페이스도 이진 프로토콜의 한 형태로 간주될 수 있다.
6. 프로토콜의 기본 요구 사항
통신 시스템에서는 통신을 설정하고 데이터를 주고받기 위해 메시지를 교환한다. 따라서 프로토콜은 이러한 전송 과정을 관리하기 위한 규칙들을 명확히 정의해야 한다. 일반적으로 통신 프로토콜은 다음과 같은 기본적인 요구 사항들을 충족해야 한다.[39]
- 데이터 교환을 위한 데이터 형식: 디지털 메시지는 비트열 형태로 교환된다. 이 비트열은 여러 필드로 나뉘며, 각 필드는 프로토콜 운영에 필요한 정보를 담는다. 개념적으로 비트열은 데이터를 담는 '페이로드' 부분과 프로토콜 제어 정보를 담는 '헤더' 부분으로 구성된다. 만약 비트열의 크기가 최대 전송 단위(MTU)를 초과하면, 적절한 크기의 조각으로 나누어 전송된다.[40]
- 데이터 교환을 위한 주소 형식: 주소는 메시지를 보내는 송신자와 메시지를 받아야 하는 수신자를 식별하는 데 사용된다. 주소 정보는 일반적으로 비트열의 헤더 부분에 포함되어, 메시지를 받은 시스템이 자신이 처리해야 할 메시지인지 판단할 수 있게 한다. 송신자와 수신자 간의 특정 통신 경로는 '(송신자 주소, 수신자 주소)'와 같은 주소 쌍으로 식별될 수 있다. 특정 주소 값은 특별한 의미를 가질 수 있는데, 예를 들어 모든 비트가 '1'인 주소는 네트워크 내의 모든 장치를 대상으로 하는 브로드캐스트 주소로 사용될 수 있다. 이러한 주소 값의 의미를 정의하는 규칙들을 통틀어 '주소 지정 방식'이라고 한다.[41]
- 주소 매핑: 때로는 한 종류의 주소 체계에서 사용되는 주소를 다른 종류의 주소 체계로 변환해야 할 필요가 있다. 예를 들어, 응용 프로그램에서 사용하는 논리적인 IP 주소를 이더넷 네트워크에서 사용하는 물리적인 MAC 주소로 변환하는 경우가 이에 해당한다. 이를 '주소 매핑'이라고 한다.[42]
- 라우팅: 통신하려는 시스템들이 직접 연결되어 있지 않은 경우, 중간에 위치한 시스템들이 메시지를 목적지까지 전달해주는 역할을 해야 한다. 이러한 중간 시스템을 '라우터'라고 하며, 라우터를 통해 여러 네트워크를 연결하는 것을 '인터네트워킹'이라고 한다. 라우터는 메시지가 최종 목적지까지 도달할 수 있도록 적절한 경로를 결정한다.
- 전송 오류 감지: 데이터가 전송되는 과정에서 손상될 가능성이 있는 네트워크 환경에서는 오류를 감지하는 기능이 필수적이다. 일반적인 방법 중 하나는 데이터 영역에 대한 순환 중복 검사(CRC) 값을 계산하여 패킷 끝에 추가하는 것이다. 수신자는 이 CRC 값을 확인하여 데이터 손상 여부를 판단하고, 오류가 감지되면 해당 패킷을 거부하고 재전송을 요청하는 등의 방식으로 처리한다.[43]
- 응답: 연결 지향 통신에서는 송신자가 보낸 패킷이 수신자에게 제대로 도착했는지 확인하기 위해 응답(ACK) 메커니즘이 필요하다. 수신자는 패킷을 성공적으로 받으면 송신자에게 응답 메시지를 보내 이를 알린다.[44]
- 정보 손실 처리 (타임아웃 및 재시도): 네트워크 상에서 패킷이 손실되거나 전송이 지연될 수 있다. 이러한 상황에 대처하기 위해, 일부 프로토콜은 송신자가 특정 시간(타임아웃) 내에 수신자로부터 응답을 받지 못하면 패킷이 손실된 것으로 간주하고 해당 정보를 다시 전송(재시도)하도록 규정한다. 만약 네트워크 연결 자체가 영구적으로 끊어진 경우 재전송은 효과가 없으므로, 재시도 횟수에는 제한을 둔다. 정해진 횟수만큼 재시도해도 성공하지 못하면 오류로 처리된다.[45]
- 정보 흐름 방향: 반이중 통신 링크처럼 한 번에 한 방향으로만 데이터를 전송할 수 있거나, 공유 매체처럼 한 번에 하나의 송신자만 데이터를 전송할 수 있는 환경에서는 데이터 흐름의 방향을 제어하는 규칙이 필요하다. 이를 '매체 접근 제어'라고 한다. 여러 장치가 동시에 전송을 시도하여 발생하는 충돌(통신)이나 경쟁(통신) 상태를 해결하기 위한 방안도 마련되어야 한다.[46]
- 시퀀스 제어: 긴 데이터를 여러 개의 작은 조각으로 나누어 전송할 때, 각 조각은 네트워크 상황에 따라 서로 다른 경로를 통하거나 지연될 수 있어 순서가 뒤바뀌어 도착할 수 있다. 또한 재전송으로 인해 중복된 조각이 도착할 수도 있다. 이러한 문제를 해결하기 위해 송신자는 각 조각에 순서 번호(시퀀스 번호)를 부여한다. 수신자는 이 순서 번호를 이용해 조각들의 순서를 올바르게 재조립하고, 손실되거나 중복된 조각을 식별하여 필요한 재전송을 요청할 수 있다.[47]
- 흐름 제어: 송신자가 데이터를 보내는 속도가 수신자나 중간 네트워크 장비가 처리할 수 있는 속도보다 빠르면 데이터 손실이 발생할 수 있다. 이를 방지하기 위해 수신자가 송신자에게 메시지를 보내 데이터 전송 속도를 조절하도록 요청하는 '흐름 제어' 메커니즘이 필요하다.[48]
- 큐잉: 통신 과정을 처리하는 프로세스나 상태 머신은 일반적으로 큐(Queue, 또는 "버퍼")를 사용하여 메시지를 관리한다. 메시지는 보통 도착한 순서대로 처리되는 선입 선출(FIFO) 방식으로 큐에 저장되며, 경우에 따라 우선순위가 다른 여러 개의 큐를 사용하여 중요한 메시지를 먼저 처리하기도 한다.
7. 프로토콜 설계
프로토콜은 네트워크나 다른 매체를 통해 장치 간 정보를 교환하기 위한 규칙과 규약의 집합이다. 이는 통신의 성격, 교환되는 실제 데이터, 그리고 각 상태에 따른 행동 방식을 정의하며, 디지털 컴퓨팅 시스템에서는 알고리즘과 데이터 구조 형태로 표현될 수 있다. 프로토콜은 통신을 위한 알고리즘이나 프로그래밍 언어와 유사한 역할을 한다.
운영 체제 내에서는 여러 프로세스가 공유 데이터를 통해 협력적으로 통신하며, 이는 잘 정의된 프로토콜에 의해 제어된다. 하지만 네트워크 환경에서는 시스템들이 공유 메모리 없이 공유된 전송 매체를 사용해야 한다. 이 전송 매체는 항상 신뢰할 수 있는 것은 아니며, 각 시스템은 서로 다른 하드웨어나 운영 체제를 사용할 수 있다는 복잡성이 존재한다.
이러한 복잡성을 관리하기 위해, 프로토콜 설계에서는 분해(decomposition)와 계층화(layering) 원칙을 적용한다. 복잡한 통신 기능을 여러 개의 더 작고 관리하기 쉬운 부분, 즉 협력하는 프로토콜들로 나누고, 이를 기능별 계층으로 구조화하는 것이다. 이는 컴파일러나 운영 체제 설계에서 성공적으로 사용된 추상화 계층 개념을 통신 분야에 적용한 것으로[29][30], 현대 프로토콜 설계의 기초를 이룬다. 이렇게 여러 프로토콜이 계층적으로 협력하는 구조를 프로토콜 스택(protocol stack) 또는 프로토콜 스위트(protocol suite)라고 부른다.[31] 대표적인 예로는 인터넷 프로토콜 스위트(TCP/IP), IPX/SPX, X.25, AppleTalk 등이 있다.
또한, 통신 시스템은 여러 구성 요소가 동시에 작동하는 동시적(concurrent) 특성을 갖는다. 따라서 프로토콜 설계에서는 통신 메시지를 올바른 순서로 주고받기 위한 소프트웨어 동기화(synchronization)가 매우 중요한 고려 사항이다.[49] 동시 시스템은 예상치 못한 방식으로 상호작용하며 숨겨진 오류(버그)를 포함하기 쉽기 때문에, 형식 검증을 통해 프로토콜의 정확성을 보장하려는 노력이 이루어진다.[50] 통신 순차 프로세스(CSP)[51]나 유한 상태 기계(밀리 머신, 무어 머신)[52]와 같은 수학적 모델이 동시성을 모델링하고 분석하는 데 사용된다.
네트워킹 프로토콜을 실제로 구현하기 위해서는, 프로토콜 소프트웨어 모듈이 해당 시스템의 운영 체제에 구현된 네트워킹 프레임워크와 상호작용(인터페이스)해야 한다.[69] TCP/IP 모델과 OSI 모델이 이러한 프레임워크의 잘 알려진 예시이다. 프로토콜 알고리즘을 이식성 높은 프로그래밍 언어로 작성하면 특정 운영 체제에 종속되지 않는 프로토콜 소프트웨어를 만들 수도 있다.
성공적인 통신을 위해서는 프로토콜을 통해 다음과 같은 기본적인 요소들을 명확히 정의해야 한다.[90]
- 전송로의 물리적 조건: 유선 통신이라면 케이블 종류, 커넥터 모양, 전기적 신호 특성 등을, 무선 통신이라면 사용할 주파수 대역, 변조 방식 등을 규정한다. (IEEE 802.11, 블루투스 등)
- 전달 방식: 통신의 핵심 규칙으로, 디지털 신호(0과 1)를 어떻게 표현할지(부호화), 통신 시작과 끝을 어떻게 맞출지(동기), 여러 장치가 매체를 공유할 때 어떻게 순서를 정할지(액세스 제어), 전송 중 발생하는 오류를 어떻게 처리할지(오류 제어), 데이터 흐름 속도를 어떻게 조절할지(흐름 제어) 등을 정한다.
- 상대방 특정: 1대1 통신이 아닌 네트워크 환경에서는 데이터를 보낼 상대를 정확히 지정해야 한다. 이를 위해 MAC 주소나 IP 주소와 같은 고유한 주소를 사용하며, 필요에 따라 주소 형식을 변환하는 규칙도 정의한다.
- 정보 표현: 주고받는 비트(bit) 열이 의미 있는 정보가 되도록 표현 규칙을 정해야 한다. 예를 들어, 문자를 어떻게 부호화할지(ASCII, Shift_JIS 등), 특정 명령어를 어떻게 표현할지, 실제 전송할 데이터(페이로드)의 구조는 어떻게 할지 등을 패킷이나 프레임 형식으로 상세히 규정한다.
7. 1. 프로토콜 계층화
현대 프로토콜 설계의 핵심 원칙은 계층화(layering)이다. 이는 복잡한 통신 기능을 여러 개의 더 작고 관리하기 쉬운 부분, 즉 계층(layer)으로 나누는 방식이다. 각 계층은 특정 통신 문제를 해결하며, 다른 계층과는 잘 정의된 방식으로만 상호작용한다.이 계층화 접근법은 인터넷 개발 당시 컴파일러나 운영 체제 설계에서 성공적으로 검증된 추상화 계층 개념을 통신 프로토콜에 적용한 것이다. 원래 하나였던 네트워킹 프로그램을 여러 협력하는 프로토콜로 분해하면서 계층화 개념이 등장했고, 이는 오늘날 프로토콜 설계의 기초가 되었다.[29][30]
계층화는 각 프로토콜 구성 요소를 조합 폭발의 위험 없이 독립적으로 설계하고 테스트할 수 있게 하여, 전체 시스템의 복잡성을 줄이고 개발 및 유지보수를 용이하게 한다. 또한 필요에 따라 특정 계층의 기술을 교체할 수 있는 유연성을 제공한다. 예를 들어, 터널링을 사용하여 서로 다른 네트워크 환경을 연결할 수 있다.
실제 통신 시스템은 단일 프로토콜이 아닌, 여러 프로토콜이 협력하는 프로토콜 스위트(protocol suite)를 사용한다.[31] 각 계층은 애플리케이션, 전송, 인터넷, 네트워크 인터페이스 등 특정 기능과 관련된 문제들을 해결한다.[32] 메시지를 전송하기 위해서는 각 계층에 맞는 프로토콜을 선택해야 한다.[33]
가장 대표적인 프로토콜 스위트는 인터넷 프로토콜 스위트(TCP/IP)이다. 이는 원래 단일 프로토콜이었던 전송 제어 프로그램을 전송 제어 프로토콜(TCP)과 인터넷 프로토콜(IP)로 분리하면서 계층화된 구조를 갖게 되었다. TCP/IP 모델은 단순성과 모듈성을 특징으로 하며, 현재 인터넷의 핵심 기반이다.[53]
또 다른 중요한 참조 모델은 OSI 모델이다. OSI 모델은 국제 표준화 기구(ISO)에서 개발한 참조 모델로, TCP/IP 모델보다 더 엄격한 계층 구조와 규칙을 정의한다. 비록 인터넷에서는 TCP/IP가 지배적이지만, OSI 모델은 네트워크 개념을 이해하고 교육하는 데 중요한 역할을 한다.
7. 2. 소프트웨어 계층화
네트워킹 프로토콜을 구현하기 위해 프로토콜 소프트웨어 모듈은 시스템의 운영 체제에 구현된 프레임워크와 인터페이스한다. 이 프레임워크는 운영 체제의 네트워킹 기능을 구현한다.[69] 프로토콜 알고리즘이 이식 가능한 프로그래밍 언어로 표현되면 프로토콜 소프트웨어는 운영 체제와 독립적으로 만들 수 있다. 가장 잘 알려진 프레임워크는 TCP/IP 모델과 OSI 모델이다.인터넷이 개발될 당시, 추상화 계층은 컴파일러 및 운영 체제 설계 모두에서 성공적인 설계 접근 방식임을 입증했다. 프로그래밍 언어와 통신 프로토콜 간의 유사성을 고려하여, 원래의 단일체(monolithic) 네트워킹 프로그램은 여러 협력 프로토콜로 분해되었다.[29] 이로 인해 오늘날 프로토콜 설계의 기초를 형성하는 계층형 프로토콜 개념이 생겨났다.[30]
시스템은 일반적으로 전송을 처리하기 위해 단일 프로토콜을 사용하지 않는다. 대신, 때로는 프로토콜 스위트(protocol suite) 또는 프로토콜 스택(protocol stack)이라고 불리는 협력 프로토콜 세트를 사용한다.[31] 가장 잘 알려진 프로토콜 스위트로는 인터넷 프로토콜 스위트(TCP/IP), IPX/SPX, X.25, AX.25 및 AppleTalk 등이 있다.
프로토콜은 기능을 기반으로 그룹으로 정렬될 수 있으며, 이러한 기능은 계층(layer)에 매핑된다. 각 계층은 응용 프로그램, 전송, 인터넷 및 네트워크 인터페이스 기능과 관련된 별개의 문제 클래스를 해결한다.[32] 메시지를 전송하려면 각 계층에서 프로토콜을 선택해야 하며, 다음 계층의 프로토콜 선택은 각 계층에 대한 프로토콜 선택기를 사용하여 메시지를 확장함으로써 이루어진다.[33]
현대 프로토콜 설계에서, 프로토콜은 프로토콜 스택을 형성하기 위해 계층화된다. 계층화는 프로토콜 설계 작업을 더 작은 단계로 나누는 설계 원칙이다. 각 단계(계층)는 특정 부분을 수행하며, 프로토콜의 다른 부분과는 소수의 잘 정의된 방식으로만 상호 작용한다. 계층화를 통해 프로토콜의 각 부분을 조합 폭발(combinatorial explosion) 없이 설계하고 테스트할 수 있어, 각 설계를 비교적 단순하게 유지할 수 있다.
인터넷에서 사용되는 통신 프로토콜은 다양하고 복잡한 환경에서 작동하도록 설계되었다. 인터넷 프로토콜은 단순성과 모듈성을 위해 설계되었으며, 인터넷 프로토콜 제품군에 정의된 기능 계층의 대략적인 계층 구조에 적합하다.[53] 최초의 두 협력 프로토콜인 전송 제어 프로토콜(TCP)과 인터넷 프로토콜(IP)은 단일 통신 프로토콜이었던 원래의 전송 제어 프로그램(Transmission Control Program)이 분해되면서 이러한 계층화된 통신 제품군으로 발전했다.
OSI 모형은 인터넷보다 앞서 존재했던 네트워크에 대한 경험을 바탕으로, 프로토콜 상호 작용에 대한 훨씬 더 엄격한 규칙과 엄격한 계층화를 통해 일반적인 통신을 위한 참조 모델로 국제적으로 개발되었다.
일반적으로 응용 소프트웨어는 강력한 데이터 전송 계층을 기반으로 구축된다. 이 전송 계층 아래에는 인터넷에서 일반적으로 비연결형(connectionless)인 데이터그램 전달 및 라우팅 메커니즘이 있다. 네트워크를 통한 패킷 중계는 이더넷과 같은 특정 물리 계층 기술에 특정한 네트워크 링크 기술만 포함하는 또 다른 계층에서 발생한다. 계층화는 필요할 때 기술을 교환할 기회를 제공한다. 예를 들어, 프로토콜은 종종 터널링 방식으로 쌓여 서로 다른 네트워크의 연결을 수용한다. 예를 들어, IP는 비동기 전송 모드(ATM) 네트워크를 통해 터널링될 수 있다.
하나의 통신이라도 역할이 다른 여러 프로토콜로 구성되는 경우가 많으며, 이를 묶어 "프로토콜 스택", "프로토콜 패밀리", "프로토콜 스위트" 등으로 부른다. 이는 네트워크 프로토콜이 계층적으로 정의되어 있는 것에 대응하여, 이를 구현하는 소프트웨어도 계층적으로 구축되기 때문이다. 또한, 이로부터 프로토콜 및 프로토콜 스택은 종종 해당 소프트웨어에서의 구현을 지칭하기도 한다. 현재 널리 보급되어 있는 프로토콜 스위트로는 인터넷 프로토콜 스위트(TCP/IP)를 들 수 있다.
7. 3. 엄격한 계층화
OSI 모형은 인터넷 이전에 존재했던 다양한 네트워크 운영 경험을 바탕으로, 일반적인 통신 환경을 위한 참조 모델로서 국제적인 표준화를 거쳐 개발되었다. 이 모델은 프로토콜 간의 상호 작용 규칙과 계층 구조에 대해 인터넷 프로토콜 제품군보다 훨씬 엄격한 접근 방식을 채택했다.[20][21]계층화 자체는 프로토콜 설계를 기능별로 세분화하여 각 부분의 복잡성을 낮추고, 조합 폭발의 문제 없이 독립적인 설계와 테스트를 가능하게 하는 유용한 원칙이다.[30] 실제로 인터넷 프로토콜 제품군 역시 전송 제어 프로그램(TCP)과 인터넷 프로토콜(IP)을 중심으로 기능별 계층 구조를 따르고 있다.[53]
하지만 OSI 모델의 지나치게 엄격한 계층화와 규칙은 실제 네트워크 환경, 특히 인터넷의 발전 과정에서 유연성과 실용성을 강조하는 TCP/IP 모델과의 경쟁에 직면하게 되었다. 1980년대 후반부터 1990년대 초반까지 어떤 표준이 더 효율적이고 강력한 컴퓨터 네트워크를 구축하는 데 적합한지를 두고 소위 프로토콜 전쟁이라 불리는 치열한 논쟁이 벌어졌다.[24][25][26] 결국, 인터넷 환경에서는 이론적인 완성도보다는 실제 구현의 용이성, 성능, 기존 네트워크와의 호환성 등 실용적인 측면에서 우위를 보인 TCP/IP 모델이 널리 채택되어 사실상의 표준으로 자리 잡게 되었다. 이는 엄격한 이론적 모델보다는 실제 환경에 대한 적응력이 기술 표준 경쟁에서 중요한 요소로 작용했음을 보여주는 사례이다.
7. 4. 설계 패턴
ốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngốngống7. 5. 형식 사양
통신 구문을 설명하는 데 널리 사용되는 형식적인 방법으로는 ASN.1(ISO 표준)과 ABNF(IETF 표준) 등이 있다.유한 상태 기계 모델은 프로토콜이 가질 수 있는 다양한 상호작용을 형식적으로 설명하는 데 사용된다.[66][67] 또한, 서로 통신하는 유한 상태 기계 모델도 활용된다.[68]
8. 프로토콜 개발
현대적인 데이터 통신에서 '프로토콜'이라는 용어가 처음 사용된 것은 1967년 4월 영국 국립 물리 연구소(NPL)에서 로저 스캔틀베리와 키스 바틀렛이 작성한 메모 "NPL 데이터 통신 네트워크에서 사용하기 위한 프로토콜"에서였다.[5][6][7][8][9] 이는 도널드 데이비스가 이끌던 패킷 스위칭 연구의 일환이었다.
1969년 ARPANET에서는 호스트 간 통신을 위해 밥 칸이 1822 프로토콜을 작성하여 IMP로 메시지를 전송하는 방식을 정의했다.[10] 이후 스티브 크로커, 존 포스텔, 빈트 서프 등이 참여하여 개발한 ARPANET의 네트워크 제어 프로그램(NCP)은 1970년에 처음 구현되었다.[11] NCP 인터페이스는 애플리케이션 소프트웨어가 상위 레벨 통신 프로토콜을 사용하여 ARPANET을 통해 연결될 수 있도록 했는데, 이는 '프로토콜 계층' 개념의 초기 사례로 볼 수 있다.[12]
1970년대 초, 프랑스의 루이 푸쟁이 설계한 CYCLADES 네트워크는 엔드 투 엔드 원칙을 적용하여 데이터의 안정적인 전송 책임을 호스트 컴퓨터가 지도록 한 선구적인 시도였다.[13] 푸쟁의 팀은 최선형 서비스 기반 위에서 안정적인 가상 회선 서비스를 제공하는 연구를 통해 훗날 전송 제어 프로토콜(TCP) 개발에 중요한 기여를 했다.[14][15][16] 비슷한 시기, 제록스 PARC의 밥 메트칼프 등은 이더넷과 인터넷 연결을 위한 PARC 유니버설 패킷(PUP) 프로토콜을 개발했다.[17]
밥 칸과 빈트 서프는 1970년대 초 연구를 통해 전송 제어 프로그램(TCP)을 공식화했다.[18] 1974년 12월 서프, 요겐 달라르, 칼 선샤인이 작성한 RFC 675 명세는 당시에는 아직 단일 구조의 프로토콜이었다. 국제 네트워크 작업 그룹은 1975년 CCITT(현 ITU-T)에 비연결형 데이터그램 표준을 제안했으나 채택되지 못했고,[19] 대신 레미 데프레 등의 연구를 바탕으로 가상 회선 기반의 X.25 표준이 1976년 CCITT에 의해 채택되었다.[20][21] 한편, IBM의 시스템 네트워크 아키텍처(SNA), DEC의 DECnet, 제록스 네트워크 시스템(XNS) 등 컴퓨터 제조사들의 독점 프로토콜들도 개발되었다.[22]
기존의 TCP 소프트웨어는 이후 모듈화된 프로토콜 스택인 "TCP/IP"로 재설계되어 1982년 SATNET에, 1983년 1월에는 ARPANET에 공식적으로 도입되었다. 1989년까지 RFC 1122 및 RFC 1123 등에 명시된 완전한 인터넷 프로토콜 스위트가 개발되면서, TCP/IP는 신생 인터넷의 핵심 구성 요소로 자리 잡게 되었다.[23]
통신 표준에 대한 국제적인 논의는 1984년 국제 표준화 기구(ISO)가 발표한 OSI 모델로 이어졌으나, 실제 인터넷 환경에서는 TCP/IP가 주도권을 잡으면서 1980년대 후반부터 프로토콜 전쟁이라 불리는 표준 경쟁이 벌어지기도 했다.[24][25][26]
이러한 개발 과정 속에서 프로토콜은 통신을 위한 규칙과 규약의 집합으로 정의되었으며[3][4], 운영 체제의 네트워킹 기능과 상호작용하는 소프트웨어 모듈로 구현되었다.[69] 특히 추상화 계층 개념이 도입되면서, 단일 프로그램 대신 여러 기능을 계층별로 나누어 담당하는 프로토콜 스위트(예: TCP/IP, IPX/SPX, X.25 등) 방식이 보편화되었다.[29][30][31][32] 메시지 전송 시 각 계층에 맞는 프로토콜이 선택되어 사용된다.[33]
8. 1. 프로토콜 표준의 필요성
통신 프로토콜 표준의 필요성은 IBM이 개발한 이진 동기 통신(BSC) 프로토콜의 사례를 통해 잘 알 수 있다. BSC는 두 개의 개별 노드를 연결하기 위한 초기 링크 레벨 프로토콜이었다. 본래 다중 노드 네트워크용으로 설계되지 않았기 때문에, 실제 사용 과정에서 여러 결함이 드러났다. 더욱이 표준화가 이루어지지 않은 상황에서 여러 제조사와 조직들이 각자 프로토콜을 개선하면서 네트워크 간 호환되지 않는 버전들이 무분별하게 생겨났다. 심지어 일부 기업들은 경쟁사의 장비 사용을 막기 위해 의도적으로 비호환성을 만들기도 했다. 그 결과, 원래의 BSC 프로토콜에는 50가지가 넘는 변종이 존재하게 되었다. 만약 처음부터 표준이 있었다면 이러한 문제의 상당 부분을 예방할 수 있었을 것이다.[69]한편, 표준화 기구의 공식적인 과정을 거치지 않고 특정 프로토콜이 시장을 지배하는 경우도 있는데, 이를 ''사실상 표준''(de facto standard)이라고 부른다. 사실상 표준은 주로 신흥 시장이나 틈새시장, 또는 독점이나 과점 시장에서 나타난다. 특히, 사실상 표준이 경쟁을 제한하는 수단으로 사용될 경우 시장에 부정적인 영향을 미칠 수 있다. 역사적으로 볼 때, 공식적인 표준화는 이러한 사실상 표준의 폐해를 막기 위한 대응책으로 여겨지기도 한다. 하지만 긍정적인 사례도 있는데, 리눅스와 같은 오픈 소스 운영 체제는 사실상 표준이면서도 소스가 공개되고 개방적으로 관리되어 시장을 독점하지 않고 오히려 건전한 경쟁을 촉진한다.
8. 2. 표준화 기구
프로토콜 표준은 일반적으로 표준화 기구의 승인이나 지원을 얻어 만들어지며, 표준화 과정을 시작한다. 표준화 기구의 구성원들은 자발적으로 작업 결과에 동의하며, 종종 프로토콜과 관련된 큰 시장 점유율을 가지고 있다. 많은 경우 표준은 중요한 공공의 이익에 기여한다고 여겨져 법이나 정부에 의해 시행되기도 하므로, 표준화 기구의 승인을 얻는 것은 프로토콜에 매우 중요하다.통신 프로토콜과 관련된 주요 표준 기구는 다음과 같다.
- 국제 표준화 기구 (ISO, International Organization for Standardization)
- 국제 전기 통신 연합 (ITU, International Telecommunication Union): 공중 전화 교환망(PSTN) 및 여러 무선 통신 시스템 설계를 담당하는 통신 기술자들의 상위 조직이다. 전신인 CCITT(Consultative Committee for International Telegraph and Telephone)도 관련 표준을 제정했다. ITU-T는 전기 통신 관련 프로토콜을 제정한다.
- 전기 전자 기술자 협회 (IEEE, Institute of Electrical and Electronic Engineers): 상업용 및 소비자 기기를 위한 전자 산업의 다양한 소프트웨어 및 하드웨어 프로토콜을 관리한다.
- 인터넷 기술 특별 위원회 (IETF, Internet Engineering Task Force): 인터넷에서 사용되는 프로토콜을 관리한다. IAB(Internet Activities Board)와 관련이 있다. 인터넷 통신 프로토콜은 주로 컴퓨터 소프트웨어 규정을 중심으로 하며, 전송로 등 하드웨어 규정도 포함한다. 대부분 IETF가 정하며, 일부는 IEEE나 ISO 등이 정한다.
- 월드 와이드 웹 컨소시엄 (W3C, World Wide Web Consortium): 웹 기술에 대한 프로토콜과 표준을 제작한다.
- EIA (Electronic Industries Organization)
- NMEA: 해양 전자 장비에 사용되는 표준을 제정한다.
국제 표준 기구는 국가나 상업적 이해관계를 고려해야 하는 지역 기구보다 더 공정해야 한다. 또한 미래 표준에 대한 연구 개발도 수행한다. 실제로 언급된 표준 기구들은 서로 긴밀하게 협력한다.[70]
여러 표준 기구가 프로토콜 개발에 관여할 수 있는데, 이들이 조정되지 않으면 프로토콜에 대해 호환되지 않는 여러 정의가 생기거나 메시지 해석이 달라질 수 있다. 예를 들어, 한 정의에서 중요한 규칙(가령 라우팅 루프 방지를 위한 TTL 값의 단조 감소)이 다른 정의에서는 지켜지지 않을 수도 있다.
8. 3. 표준화 과정
통신 프로토콜이 원활하게 작동하고 서로 다른 시스템 간의 상호 운용성을 확보하기 위해서는 표준화된 규약이 필수적이다. 이러한 표준은 통신 방식의 규칙과 형식을 정의하며, 알고리즘이나 데이터 구조로 표현될 수 있다. 특정 하드웨어나 운영 체제에 얽매이지 않는 표준 명세는 더 넓은 범위의 기기들이 서로 통신할 수 있게 하는 기반이 된다.통신 프로토콜 표준은 주로 표준화 기구의 승인과 지원을 통해 제정된다. 표준화 기구는 관련 분야의 전문가, 기업, 정부 기관 등 다양한 구성원들이 참여하여 자발적으로 합의를 통해 표준을 만들어나간다. 표준화 기구의 구성원 중에는 해당 프로토콜과 관련된 시장에서 큰 영향력을 가진 경우가 많으며, 때로는 표준이 중요한 공공의 이익에 기여한다고 판단되어 법이나 정부 정책을 통해 강제되기도 한다. 따라서 표준화 기구의 승인을 얻는 것은 프로토콜의 성공적인 보급과 확산에 매우 중요한 과정이다.
대표적인 국제 표준화 기구인 ISO의 경우, 표준화 과정은 다음과 같은 단계로 진행된다. 먼저, 특정 주제에 대한 표준 제정 필요성이 제기되면 관련 하위 위원회(Subcommittee, SC) 내에 작업 그룹(Working Group, WG)이 구성되어 표준 개발 작업을 위임받는다. 작업 그룹은 논의를 활성화하고 다양한 의견을 수렴하기 위해 관련 당사자들(다른 표준화 기구 포함)에게 작업 초안(Working Draft, WD)이나 토론 문서 등을 발행하여 배포한다.
이 과정에서는 수많은 질문과 토론이 오가며, 때로는 이해관계에 따른 의견 충돌이 발생하기도 한다. 작업 그룹은 이렇게 수집된 피드백과 의견들을 신중히 검토하고 조율하여 ''초안 제안''(Draft Proposal, DP)을 작성한다. 이후 추가적인 검토와 수정을 거쳐 ''초안 국제 표준''(Draft International Standard, DIS) 단계에 이르게 된다. 회원국들의 투표와 합의를 통해 최종적으로 승인되면 ''국제 표준''(International Standard, IS)으로 공표된다. 제정된 국제 표준은 기술 발전이나 환경 변화에 맞춰 내용을 보완하거나 수정하기 위해 주기적으로 검토되고 재발행된다.[71]
8. 4. OSI 표준화
인터넷의 전신인 ARPANET 운영 경험을 통해, 통신 프로토콜이 효과적으로 작동하기 위해서는 체계적인 프레임워크가 필요하다는 인식이 확산되었다. 이에 따라 구조화된 프로토콜(예: 계층화된 프로토콜)과 표준화에 적합하며 미래 지향적인 범용 프레임워크 개발의 중요성이 부각되었다. 이는 기능이 중복되는 프로토콜 표준의 난립을 막고, 다양한 계층에서 프로토콜의 역할을 명확히 정의하기 위함이었다.[72] 이러한 배경 속에서 표준 프로토콜 및 서비스 설계를 위한 참조 모델로서 개방형 시스템 상호 연결 모델(OSI 모델)이 등장하게 되었다.[73] OSI 모델은 1984년 국제 표준화 기구(ISO)에 의해 발표되었다.OSI 모델은 통신 시스템들이 기본적인 전송 기능을 제공하는 물리적 매체를 통해 서로 연결되어 있다고 가정한다. 이 모델은 통신 기능을 7개의 추상적인 계층으로 나누어 정의한다. 각 계층은 바로 아래 계층의 서비스를 이용하여 상위 계층에 특정 서비스를 제공하며, 최상위 계층인 응용 계층은 최종 사용자 애플리케이션 프로세스에 서비스를 제공한다. 계층 간의 통신은 '서비스 접근점'(SAP, Service Access Point)이라는 인터페이스를 통해 이루어진다. 서로 다른 시스템에 있는 동일한 계층의 기능 단위들은 '피어 엔티티'(peer entity)라고 불리며, 이들은 해당 계층에 정의된 특정 프로토콜을 사용하여 통신한다. 이 통신은 하위 계층의 서비스를 통해 구현된다.[74] 각 계층에는 두 가지 유형의 표준이 존재하는데, 하나는 피어 엔티티 간의 통신 방식을 정의하는 프로토콜 표준이고, 다른 하나는 해당 계층이 상위 계층과 상호작용하는 방식을 정의하는 서비스 표준이다.
OSI 모델의 7개 계층과 각 계층의 주요 기능은 다음과 같다 (최상위 계층부터 최하위 계층 순서).
계층 번호 | 계층 이름 | 주요 기능 |
---|---|---|
7 | 응용 계층 (Application Layer) | 최종 사용자와 직접 상호작용하는 계층. 통신 파트너 식별, 자원 가용성 확인, 사용자 인증, 데이터 구문 협상, 오류 복구 및 데이터 무결성 보장, 동기화, 프라이버시 보호 등 다양한 응용 서비스 제공.[75] |
6 | 표현 계층 (Presentation Layer) | 데이터의 형식(syntax)을 정의하고, 서로 다른 시스템 간의 데이터 표현 방식 차이를 해결. 데이터 암호화, 데이터 압축, 문자 인코딩 변환 등 수행.[76] |
5 | 세션 계층 (Session Layer) | 통신 장치 간의 상호작용(세션)을 설정, 관리, 종료. 대화 제어, 동기화, 오류 복구 관리 등 수행.[77] |
4 | 전송 계층 (Transport Layer) | 종단 간(end-to-end)의 신뢰성 있고 투명한 데이터 전송 보장. 데이터 분할 및 재조립, 흐름 제어, 오류 제어, 다중화 등 수행. 선택된 서비스 품질(QoS)에 따라 비용 효율적인 전송 방식 제공.[78] |
3 | 네트워크 계층 (Network Layer) | 데이터 패킷을 발신지에서 목적지까지 전달하기 위한 최적의 경로(라우팅) 설정 및 관리. 논리 주소(IP 주소 등) 지정, 패킷 스위칭, 네트워크 혼잡 제어 등 수행.[79] |
2 | 데이터 링크 계층 (Data Link Layer) | 물리적 링크를 통해 데이터를 신뢰성 있게 전송하는 기능 제공. 물리 주소(MAC 주소 등) 지정, 프레임 생성, 오류 검출 및 수정, 흐름 제어 등 수행.[80] |
1 | 물리 계층 (Physical Layer) | 데이터를 전기적, 기계적, 기능적 특성을 이용하여 물리적 매체를 통해 전송. 케이블, 커넥터, 전압 레벨, 데이터 전송률 등 물리적 연결과 관련된 세부 사항 정의.[81] |
OSI 모델은 초기에 연결 지향 통신 방식을 가정하고 설계되었다. 이는 당시 광역 통신망(WAN) 환경에 더 적합하다고 여겨졌기 때문이다. 연결 지향 통신은 데이터 전송 전에 논리적인 연결(세션 또는 가상 회선)을 설정해야 하므로, OSI 모델에는 TCP/IP 모델에는 없는 세션 계층이 포함되었다.[82] 반면, 근거리 통신망(LAN) 환경에 더 적합한 비연결형 통신 방식은 초기에 OSI 모델의 부록에서 다루어졌고[83][84], 이후 모델 업데이트를 통해 통합되었다.[85]
한편, 인터넷 기술을 주도하던 인터넷 엔지니어링 태스크 포스(IETF)는 실제 인터넷 환경에 필요한 프로토콜 개발에 집중했다. IETF는 "대략적인 합의와 실제 동작하는 코드"를 중시하는 독자적인 표준화 프로세스(RFC 2026에 설명됨)를 발전시켰다.[86] 결과적으로, 1980년대 후반과 1990년대 초반에는 OSI 모델과 인터넷 프로토콜 스위트(TCP/IP) 중 어떤 표준이 더 우수한 네트워크를 구축할 것인가를 두고 논쟁(프로토콜 전쟁)이 벌어지기도 했다.[24][25][26] 오늘날 IETF는 사실상 인터넷 프로토콜의 표준화 기구로 자리매김했으며, OSI 모델은 네트워크 개념을 이해하고 교육하는 데 중요한 참조 모델로 활용되고 있다. OSI 모델이 비연결형 서비스를 포함하도록 확장되면서 TCP와 IP 역시 국제 표준으로 인정받는 기반이 마련되기도 했다.
9. 와이어 이미지
프로토콜의 '''와이어 이미지'''는 프로토콜 메시지를 관찰함으로써 프로토콜 참여자가 아닌 관찰자가 얻을 수 있는 정보이다. 이는 프로토콜이 명시적으로 의미를 부여한 정보뿐만 아니라 관찰자가 추론한 정보도 포함한다. 암호화되지 않은 프로토콜 메타데이터는 와이어 이미지를 구성하는 주요 요소 중 하나이며, 패킷 타이밍을 포함한 사이드 채널 정보도 와이어 이미지 형성에 기여한다. 서로 다른 관점을 가진 관찰자는 각기 다른 와이어 이미지를 볼 수 있다.
와이어 이미지는 최종 사용자의 개인 정보 보호 문제와 프로토콜의 확장성에 직접적인 관련이 있다.
만약 와이어 이미지의 일부가 암호화 방식으로 인증되지 않았다면, 미들박스와 같은 중간 장치에 의해 수정될 가능성이 있으며, 이는 프로토콜의 정상적인 작동에 영향을 미칠 수 있다. 인증 절차를 거쳤더라도, 암호화되지 않은 부분은 여전히 와이어 이미지의 일부를 형성하며, 중간 장치는 해당 내용을 기반으로 개입할 수 있다(예를 들어, 특정 플래그가 표시된 패킷을 삭제하는 행위). 중개자가 정보를 활용할 수 있도록 의도적으로 보내는 신호는 인증은 거치되 암호화되지 않을 수 있다.
와이어 이미지는 의도적으로 설계될 수 있다. 즉, 중개자가 관찰할 수 없도록 특정 부분을 암호화하는 동시에, 관찰이 필요한 부분에 대해서는 신호를 제공하는 방식으로 구성될 수 있다. 그러나 제공된 신호가 프로토콜의 실제 작동과 분리될 경우, 해당 신호의 신뢰성은 떨어질 수 있다.
메타데이터 암호화는 긍정적인 목적의 네트워크 관리나 연구 활동에 영향을 줄 수 있다. 따라서 프로토콜 설계자는 운영 및 연구를 위한 관찰 가능성 확보와, 외부 간섭에 대한 저항성 강화 및 최종 사용자 개인 정보 보호 강화 사이에서 신중한 균형을 찾아야 한다. IETF는 2014년, 프로토콜 작동에 대한 대규모 감시 행위가 와이어 이미지를 통해 사용자와 그들의 행동에 대한 정보를 추론할 수 있게 하므로 이는 명백한 공격 행위라고 규정했다. 이에 따라 IETF는 프로토콜 설계 단계에서 "만연한 모니터링을 완화하기 위해 노력할 것"이라고 발표했는데, 이는 이전에는 체계적으로 이루어지지 않았던 접근 방식이다.
IAB는 2023년에 다음과 같은 권고 사항을 발표했다.
- 프로토콜이 네트워크에 정보를 공개하는 것은 의도적이어야 한다.
- 정보 공개는 수신자와 송신자 모두의 동의를 얻어 수행되어야 한다.
- 공개되는 정보는 가능한 한 필요에 따라 인증되어야 한다.
- 정보는 신뢰도에 따라 작동해야 한다.
- 정보 공개는 최소화되어야 하며, 최소한의 주체(entity)에게만 제공되어야 한다.
IAB에 따르면, 와이어 이미지 설계 및 네트워크 요소에 제공되는 신호 제어는 2023년 기준으로 "아직 개발 중인 분야"이다.
10. 경화 (Ossification)
프로토콜 경화는 네트워크 프로토콜의 유연성, 확장성 및 진화 가능성이 손실되는 현상이다. 이는 주로 프로토콜의 와이어 이미지(wire image)를 민감하게 감지하고, 유효하지만 제대로 인식하지 못하는 메시지를 방해하거나 간섭할 수 있는 미들박스 때문이다. 이는 종단간 원칙을 위반하는 것이다. 부차적인 원인으로는 프로토콜의 엔드포인트 구현의 유연성 부족이 있다.
경화는 인터넷 프로토콜 설계 및 배포에 있어 주요 문제이며, 새로운 프로토콜이나 확장의 인터넷 배포를 방해하거나 새로운 프로토콜 설계에 제약을 가할 수 있다. 새로운 프로토콜은 이미 배포된 프로토콜에 캡슐화되거나 다른 프로토콜의 와이어 이미지를 모방해야 할 수도 있다. 경화 때문에 전송 제어 프로토콜(TCP)과 사용자 데이터그램 프로토콜(UDP)는 인터넷에서 전송 프로토콜로 실질적인 선택지가 되었으며, TCP 자체도 상당히 경화되어 프로토콜의 확장 또는 수정이 어렵게 되었다.
경화를 방지하기 위한 권장 방법으로는 프로토콜 메타데이터 암호화와 확장 지점이 활용되고 와이어 이미지 가변성이 가능한 최대한 발휘되도록 하는 것이다. 기존 경화의 해결에는 프로토콜 참가자 간의 조정이 필요하다. QUIC은 의도적인 반경화 속성을 갖도록 설계된 최초의 IETF 전송 프로토콜이다.
11. 분류 체계 (Taxonomies)
통신 프로토콜 분류 체계는 일반적으로 사용 분야와 기능에 중점을 둔다. 사용 분야의 예시로, 연결 지향형 프로토콜과 비연결형 프로토콜은 각각 연결 지향형 네트워크와 비연결형 네트워크에서 사용된다. 기능의 예시로는 터널링 프로토콜이 있는데, 이는 패킷을 상위 레벨 프로토콜로 캡슐화하여 해당 프로토콜을 사용하여 전송 시스템을 통해 패킷을 전달할 수 있도록 한다.
''계층화 방식''은 기능과 사용 분야를 모두 결합한다. 주요 계층화 방식은 IETF와 ISO에서 개발한 것이다. 두 방식의 기본 가정이 서로 충분히 달라서 구별해야 함에도 불구하고, 두 방식의 공통 프로토콜을 서로 관련시켜 비교하는 것이 일반적인 관행이다.[87] IETF의 계층화 방식은 ''인터넷 계층화'' 또는 ''TCP/IP 계층화''라고 불린다. ISO의 계층화 방식은 ''OSI 모델'' 또는 ''ISO 계층화''라고 불린다.
네트워킹 장비 구성에서는 전문 용어상의 구분이 자주 사용된다. 용어 ''프로토콜''은 엄격하게 전송 계층을 지칭하며, 용어 ''서비스''는 전송을 위해 ''프로토콜''을 활용하는 프로토콜을 지칭한다. TCP와 UDP의 일반적인 경우, 서비스는 포트 번호로 구분된다. 이러한 포트 번호 준수는 자발적이므로, 콘텐츠 검사 시스템에서 용어 ''서비스''는 엄격하게 포트 번호를 지칭하며, 용어 ''애플리케이션''은 종종 검사 시그니처를 통해 식별된 프로토콜을 지칭하는 데 사용된다.
12. 대표적인 프로토콜 정의 기관
프로토콜 표준은 통신을 원활하게 하기 위해 매우 중요하며, 일반적으로 표준화 기구의 승인이나 지원을 통해 만들어진다. 표준화 기구는 해당 분야의 전문가들이 모여 자발적으로 규격을 만들고 합의하는 곳으로, 이들의 승인을 얻는 것은 프로토콜이 널리 사용되고 서로 다른 시스템 간의 상호 운용성을 확보하는 데 결정적인 역할을 한다. 때로는 정부나 법에 의해 표준 준수가 강제되기도 한다.
주요 통신 프로토콜 정의 기관들은 다음과 같다.
- 국제 표준화 기구 (ISO): 다양한 산업 분야의 국제 표준을 제정하는 대표적인 기구이다. 특정 국가나 기업의 이해관계에 치우치지 않는 공정한 표준 제정을 목표로 한다.[70]
- 국제 전기 통신 연합 (ITU): 유엔 산하의 정보 통신 기술 전문 기구로, 전신인 국제 전신 전화 자문 위원회 (CCITT) 시절부터 공중 전화 교환망 (PSTN), 무선 통신 등 전기 통신 분야의 국제 표준 개발을 주도해왔다. X.25와 같은 초기 네트워크 표준 개발에도 기여했다.[20][21]
- 전기 전자 기술자 협회 (IEEE): 전자공학 및 전기공학 분야의 전문가 단체로, 특히 이더넷 (IEEE 802.3)이나 와이파이 (IEEE 802.11)와 같은 근거리 통신망 (LAN) 및 개인 통신망 (PAN) 관련 표준 개발에 큰 영향을 미치고 있다.
- 인터넷 기술 특별 위원회 (IETF): 인터넷의 동작과 관련된 기술 표준, 특히 인터넷 프로토콜 스위트 (TCP/IP)의 개발과 표준화를 주도하는 핵심 조직이다. 상위 조직 격인 인터넷 아키텍처 위원회 (IAB)의 감독 하에 운영된다.
- 월드 와이드 웹 컨소시엄 (W3C): 팀 버너스리가 설립한 국제 컨소시엄으로, HTML, CSS, XML 등 월드 와이드 웹을 구성하는 핵심 기술의 표준을 개발하고 권고한다.
이 외에도 미국의 전자 산업 협회 (EIA)나 해양 전자 장비 관련 표준을 다루는 NMEA 등 특정 산업 분야나 지역을 중심으로 활동하는 표준화 기구들도 존재한다.
이러한 표준 기구들은 종종 서로 협력하여 표준 개발을 진행하지만, 때로는 각 기구 간의 조정이 부족하여 호환되지 않는 여러 버전의 표준이 만들어지거나 프로토콜 해석에 차이가 발생하는 문제점이 나타나기도 한다.[70]
13. 프로토콜의 예시
다음은 주요 통신 프로토콜의 예시이다. OSI 참조 모델을 기준으로 분류하면 다음과 같다.
계층 | 프로토콜 예시 |
---|---|
7. 응용 계층 | HTTP, HTTPS, FTP, SFTP, Telnet, POP3, SMTP, SSH, SOAP, DHCP, SNMP, SMB, AFP, ZIP, X.500, NFS, 그누텔라, DNS, NTP, 고퍼, 핑거, NNTP, LDAP, IRC, WebDAV, DICT |
6. 표현 계층 | TLS/SSL, AFP |
5. 세션 계층 | NetBIOS, NWLink, DSI, ADSP, ASP, PAP, 명명된 파이프, SIP, H.323, SDP |
4. 전송 계층 | TCP, UDP, SCTP, DCCP, SPX, NBF, RTMP, AURP, NBP, ATP, AEP, QUIC, IPsec |
3. 네트워크 계층 | IP (IPv4, IPv6), ARP, RARP, ICMP, IPX, NetBEUI, DDP, AARP, X.25PLP, XNS, MPLS, 라우팅 프로토콜 (EGP, BGP, EIGRP, IGRP, RIP, OSPF) |
2. 데이터 링크 계층 | 이더넷, 토큰 링, 아크넷, PPP, 프레임 릴레이, FDDI, LAP, HDLC (LAPB, LAPD, LAPDC, LAPM, LAPF), X.25, ATM |
1. 물리 계층 | RS-232, RS-422, 전화선·UTP, 허브, 리피터, 무선, 광 케이블, ISDN, RCR STD-28 (PHS), 10Base-T, 100BASE-TX, 1000BASE-T, PDH (T-캐리어), SDH, SONET |
14. 응용 분야
통신 프로토콜은 정보를 교환하기 위한 약속으로, 현대 사회의 다양한 기술 분야에서 필수적인 역할을 수행한다. 단순한 컴퓨터 간의 데이터 전송을 넘어, 인터넷 통신, 이동 통신, 방송 등 기본적인 정보통신 인프라 구축의 근간이 된다.
또한, 스마트폰과 같은 개인용 기기부터 시작하여, 자동차 내부 시스템 간의 통신(CAN 등), 스마트홈을 위한 가전제품 제어(지그비, Echonet 등), 공장 자동화(인더스트리 4.0) 시스템, 항공우주 분야의 특수 통신(스페이스와이어), 빌딩 자동화(BACnet) 등 특정 목적과 환경에 최적화된 다양한 프로토콜이 개발되어 사용되고 있다. 심지어 암호화폐 시스템 역시 고유한 통신 방식을 기반으로 운영된다.
이처럼 통신 프로토콜은 각 응용 분야의 요구사항에 맞춰 발전하며 기술 혁신을 뒷받침하고 있다. 자세한 분야별 프로토콜은 아래 하위 섹션에서 다룬다.
14. 1. 자동차
차량 내 기기 통신 규격으로는 CAN, LIN, 플렉스레이 등이 있다.14. 2. 가전
Echonet, ECHONET Lite와 같은 가전용 통신 규격이 있다.14. 3. 기기
- ISDN (종합 정보 통신망, Integrated Services Digital Networkeng)
- RCR STD-28 (PHS)
- 10Base-T, 100BASE-TX, 1000BASE-T (이더넷에 사용되는 물리 계층의 사양)
- PDH (준동기식 디지털 계층, Plesiochronous Digital Hierarchyeng), SDH 통일 이전의 지역별 동기망
- T-캐리어(T1, T3 등), ISDN의 다중화
- RS-232C, EIA-574, 시리얼 인터페이스, 초기에는 모뎀이나 컴퓨터 단말기의 연결을 위해 개발되었다.
- SDH (동기식 디지털 계층, Synchronous Digital Hierarchyeng), PDH 후속의 국제 통일 동기망
- SONET (동기 광 네트워크, Synchronous Optical NETworkingeng), SDH로 표준화되기 전의 규격
이 외에도 ARCNET(어태치드 리소스 컴퓨터 네트워크, Attached Resource Computer Networkeng)과 같은 기기 간의 통신 규약이 있다.
14. 4. 항공우주
스페이스와이어와 같은 항공우주용 통신 규약이 있다.14. 5. 암호화폐
암호화폐는 다종다양하게 현존하며, 토큰의 특이성과 암호화폐 간의 채널링(교신)을 가리키는 경우가 있다.14. 6. 공장
공장 환경에서는 특정 제조사 장비끼리만 통신이 가능한 고유 프로토콜이 많이 사용된다. 이는 특정 제조사 제품에 종속되는 벤더 락인 문제를 일으킬 수 있다. 하지만 최근 스마트 팩토리나 인더스트리 4.0과 같은 흐름 속에서, 서로 다른 제조사의 장비들이 원활하게 통신할 수 있도록 하는 표준 규격의 중요성이 커지고 있다. 대표적인 예로 OPC와 같은 표준 통신 규격이 있다.14. 7. 빌딩/주거
BACnet, LonTalk, X10, 지그비와 같은 통신 규격이 있다.참조
[1]
특허
Wireless communication protocol
2009-05-05
[2]
간행물
Protocol
https://www.britanni[...]
Encyclopædia Britannica
2012-09-24
[3]
문서
Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, "They (protocols) are to communication what programming languages are to computation"
[4]
문서
Comer 2000, Sect. 1.3 - Internet Services, p. 3, "Protocols are to communication what algorithms are to computation"
[5]
서적
A Brief History of the Future
https://books.google[...]
Orion
2015-09-24
[6]
학술지
Data Communications at the National Physical Laboratory (1965-1975)
https://archive.org/[...]
1987
[7]
서적
Entrepreneurial Capitalism and Innovation: A History of Computer Communications 1968–1988
[8]
서적
The Dream Machine
https://books.google[...]
Stripe Press
2018
[9]
학술지
Principles and lessons in packet communications
https://ieeexplore.i[...]
1978
[10]
보고서
Interface Message Processor: Specifications for the Interconnection of a Host and an IMP
http://www.bitsavers[...]
Bolt Beranek and Newman
[11]
서적
UGC -NET/JRF/SET PTP & Guide Teaching and Research Aptitude: UGC -NET By HD
https://books.google[...]
High Definition Books
[12]
웹사이트
NCP – Network Control Program
https://livingintern[...]
2022-10-08
[13]
웹사이트
Designed for Change: End-to-End Arguments, Internet Innovation, and the Net Neutrality Debate
https://www.itif.org[...]
Information Technology and Innovation Foundation
2017-09-11
[14]
서적
Inventing the Internet
https://books.google[...]
MIT Press
2000
[15]
서적
Internationalising the Internet the Co-evolution of Influence and Technology
https://books.google[...]
Edward Elgar
2005
[16]
뉴스
The internet's fifth man
https://www.economis[...]
2020-04-22
[17]
문서
Moschovitis 1999, p=[https://archive.org/details/historyofinterne0000unse/page/78/mode/2up 78-9]
[18]
학술지
A Protocol for Packet Network Intercommunication
https://www.cs.princ[...]
2020-02-23
[19]
학술지
INWG and the Conception of the Internet: An Eyewitness Account
2011
[20]
학술지
X.25 Virtual Circuits - TRANSPAC IN France - Pre-Internet Data Networking [History of communications]
2010
[21]
학술지
Commercialization of packet switching (1975-1985): A Canadian perspective [History of Communications]
2009
[22]
서적
The "Hidden" Prehistory of European Research Networking
https://books.google[...]
Trafford Publishing
[23]
웹사이트
TCP/IP Internet Protocol
https://livingintern[...]
2022-10-08
[24]
잡지
OSI: The Internet That Wasn't
https://spectrum.iee[...]
2013-07-30
[25]
웹사이트
Rough Consensus and Running Code' and the Internet-OSI Standards War
https://www2.cs.duke[...]
IEEE Annals of the History of Computing
2020-02-23
[26]
웹사이트
Standards Wars
https://courses.cs.w[...]
2020-02-23
[27]
문서
Ben-Ari 1982, chapter 2 - The concurrent programming abstraction, p. 18-19, states the same.
[28]
문서
Ben-Ari 1982, Section 2.7 - Summary, p. 27, summarizes the concurrent programming abstraction.
[29]
문서
Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, explains this by drawing analogies between computer communication and programming languages.
[30]
문서
Sect. 11.10 - The Disadvantage Of Layering, p. 192, states: layering forms the basis for protocol design.
[31]
문서
Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, states the same.
[32]
문서
Comer 2000, Sect. 11.3 - The Conceptual Layers Of Protocol Software, p. 178, "Each layer takes responsibility for handling one part of the problem."
[33]
문서
Comer 2000, Sect. 11.11 - The Basic Idea Behind Multiplexing And Demultiplexing, p. 192, states the same.
[34]
웹사이트
Data Communication - an overview {{!}} ScienceDirect Topics
https://www.scienced[...]
2022-05-31
[35]
웹사이트
Text Based Protocols
http://www.lst.de/~o[...]
2014-10-21
[36]
웹사이트
Binary Representation Protocols
http://www.lst.de/~o[...]
2006-05-04
[37]
웹사이트
Binary Representation Protocols
http://www.omg.org/t[...]
2006-05-04
[38]
웹사이트
Welcome To UML Web Site!
https://www.uml.org/
2017-01-15
[39]
문서
Chapter 3 - Fundamental protocol concepts and problem areas
1986
[40]
문서
Sect. 7.7.4 - Datagram Size, Network MTU, and Fragmentation
2000
[41]
문서
Chapter 4 - Classful Internet Addresses
2000
[42]
문서
Section 14.3 - Layering concepts and general definitions
1986
[43]
문서
Section 3.2 - Detection and transmission errors
1986
[44]
문서
Section 3.3 - Acknowledgement
1986
[45]
문서
Section 3.4 - Loss of information - timeouts and retries
1986
[46]
문서
Section 3.5 - Direction of information flow
1986
[47]
문서
Section 3.6 - Sequence control
1986
[48]
문서
Section 3.7 - Flow control
1986
[49]
문서
in his preface
1982
[50]
문서
in his preface
1982
[51]
문서
Chapter 4 - Communication
1985
[52]
간행물
Digital Circuits and Systems
http://nptel.iitm.ac[...]
NPTEL courses
[53]
문서
Sect. 11.2 - The Need For Multiple Protocols
2000
[54]
문서
Sect. 11.3 - The Conceptual Layers Of Protocol Software
2000
[55]
문서
Sect. 11.2 - The need for multiple protocols
2000
[56]
문서
Sect. 11.9.1 - Operating System Boundary
2000
[57]
문서
Sect 1.3.1 - Organization
1989
[58]
문서
Sect. 11.10 - The Disadvantage Of Layering
2000
[59]
논문
Layering considered harmful
1992-01
[60]
서적
Computer Networking: A Top-Down Approach
Pearson
[61]
웹사이트
Communication-protocol Design Patterns (CommDP) - COMMDP
http://commdp.serv.u[...]
2017-03-17
[62]
간행물
A Pattern Language for Application-level Communication Protocols
2016
[63]
서적
Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services
Addison-Wesley Professional
2011
[64]
서적
Patterns of Enterprise Application Architecture
Addison-Wesley Professional
2002
[65]
문서
Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing
Wiley
2007
[66]
논문
Finite state description of communication protocols
[67]
문서
Glossary of Internetworking Terms and Abbreviations
2000
[68]
논문
On Communicating Finite-State Machines
[69]
문서
Section 6.1 - Why are standards necessary?
1986
[70]
문서
Section 6.3 - Advantages of standardization
1986
[71]
서적
Section 6.4 - Some problems with standardisation
1986
[72]
서적
Section 6.1 - Why are standards necessary?
1986
[73]
서적
Section 14.1 - Introduction
1986
[74]
서적
Section 14.3 - Layering concepts and general definitions
1986
[75]
서적
Section 14.4 - The application layer
1986
[76]
서적
Section 14.5 - The presentation layer
1986
[77]
서적
Section 14.6 - The session layer
1986
[78]
서적
Section 14.7 - The transport layer
1986
[79]
서적
Section 14.8 - The network layer
1986
[80]
서적
Section 14.9 - The data link layer
1986
[81]
서적
Section 14.10 - The physical layer
1986
[82]
간행물
ISO 7498:1984 – Information processing systems - Open Systems Interconnection - Basic Reference Model
[83]
간행물
ISO 7498:1984/ADD 1:1987 – Information processing systems — Open Systems Interconnection — Basic Reference Model — Addendum 1
[84]
서적
Section 14.11 - Connectionless mode and RM/OSI
1986
[85]
간행물
ISO 7498:1994 – Information processing systems - Open Systems Interconnection - Basic Reference Model
[86]
서적
Section 1.9 - Internet Protocols And Standardization
2000
[87]
서적
Sect. 11.5.1 - The TCP/IP 5-Layer Reference Model
2000
[88]
웹사이트
プロトコルとは
https://kotobank.jp/[...]
2021-02-23
[89]
논문
Simulation of Factory Communication Protocols
https://books.google[...]
Society of Manufacturing Engineers, Long Beach, California
1987-10
[90]
뉴스
プロトコルはなぜ必要か
日経NETWORK
2007-07
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com